kbdA11yDialog, introspectService, start, pushModal, popModal,
activateWindow, moveWindowToMonitorAndWorkspace,
createLookingGlass, initializeDeferredWork,
- getThemeStylesheet, setThemeStylesheet, screenshotUI */
+ getStyleVariant, getThemeStylesheet, setThemeStylesheet, screenshotUI */
const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
sessionMode.connect('updated', _sessionUpdated);
St.Settings.get().connect('notify::high-contrast', _loadDefaultStylesheet);
+ St.Settings.get().connect('notify::color-scheme', _loadDefaultStylesheet);
// Initialize ParentalControlsManager before the UI
ParentalControlsManager.getDefault();
return null;
}
+/** @returns {string} */
+function getStyleVariant() {
+ const {colorScheme} = St.Settings.get();
+ switch (sessionMode.colorScheme) {
+ case 'force-dark':
+ return 'dark';
+ case 'force-light':
+ return 'light';
+ case 'prefer-dark':
+ return colorScheme === St.SystemColorScheme.PREFER_LIGHT
+ ? 'light' : 'dark';
+ case 'prefer-light':
+ return colorScheme === St.SystemColorScheme.PREFER_DARK
+ ? 'dark' : 'light';
+ default:
+ return '';
+ }
+}
+
function _getDefaultStylesheet() {
let stylesheet = null;
let name = sessionMode.stylesheetName;
if (St.Settings.get().high_contrast)
stylesheet = _getStylesheet(name.replace('.css', '-high-contrast.css'));
+ if (stylesheet === null)
+ stylesheet = _getStylesheet(name.replace('.css', `-${getStyleVariant()}.css`));
+
if (stylesheet == null)
- stylesheet = _getStylesheet(sessionMode.stylesheetName);
+ stylesheet = _getStylesheet(name);
return stylesheet;
}
const _modes = {
'restrictive': {
parentMode: null,
- stylesheetName: 'gnome-shell-dark.css',
+ stylesheetName: 'gnome-shell.css',
+ colorScheme: 'prefer-dark',
themeResourceName: 'gnome-shell-theme.gresource',
hasOverview: false,
showCalendarEvents: false,